package com.quxiu.system.mapper;

import java.util.List;
import com.quxiu.system.domain.BpmProcInst;
import com.quxiu.system.domain.vo.BpmApproveSearchParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 流程实例Mapper接口
 *
 * @author quxiu
 * @date 2024-06-14
 */
@Mapper
public interface BpmProcInstMapper {
    /**
     * 查询流程实例
     *
     * @param procInstId 流程实例主键
     * @return 流程实例
     */
    public BpmProcInst selectInstByProcInstId(@Param("procInstId") Long procInstId);

    /**
     * 查询流程实例列表
     *
     * @param param 查询条件
     * @return 流程实例集合
     */
    public List<BpmProcInst> myApproveList(BpmApproveSearchParam param);

    /**
     * 查询流程实例列表
     *
     * @param param 查询条件
     * @return 流程实例集合
     */
    public List<BpmProcInst> handoverList(BpmApproveSearchParam param);

    /**
     * 新增流程实例
     *
     * @param bpmProcInst 流程实例
     * @return 结果
     */
    public int insertBpmProcInst(BpmProcInst bpmProcInst);

    /**
     * 修改流程实例
     *
     * @param bpmProcInst 流程实例
     * @return 结果
     */
    public int updateBpmProcInst(BpmProcInst bpmProcInst);

    /**
     * 删除流程实例
     *
     * @param procInstId 流程实例主键
     * @return 结果
     */
    public int deleteBpmProcInstByProcInstId(@Param("procInstId") Long procInstId);

    /**
     * 批量删除流程实例
     *
     * @param procInstIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBpmProcInstByProcInstIds(Long[] procInstIds);

    void updateRunStatus(@Param("procInstId") Long procInstId, @Param("runStatus") String runStatus);

    void updateApprovalStatus(@Param("procInstId") Long procInstId, @Param("approvalStatus") String approvalStatus);

    void updateStatus(BpmProcInst bpmProcInst);

    void updateNodeConfig(@Param("procInstId") Long procInstId, @Param("nodeConfig") String nodeConfig);
}
